<?php 

namespace controladores;

use fcf\Controller as Controller,
	fcf\view as View,
	dao\noticiasDao as noticiasDao,
	dao\logsDao as logsDao,
	utils\Utils as Utils,
	utils\NoticiasUtils as NoticiasUtils;


class Noticias extends Controller{
	
	/*
	 * Muestra la vista del formulario para crear una nueva notícia
	 */
	public function nuevaNoticia(){
		$this->checkSesion();
		View::render('','noticias/nueva_noticia', $data);
	} 
	
	/*
	 * Muestra la vista del buscador de notícias
	 */
	public function buscadorNoticias(){
		$this->checkSesion();
		$noticias = new noticiasDao();
		$data = new \stdClass();
		$data->noticias = $noticias->getNoticias();
		View::render('','noticias/buscador_noticias',$data);
	}
	
	/*
	 * Muestra la vista de para la edición de una notícia ya existente
	 */
	public function editarNoticia($cod_noticia){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		$data = new \stdClass();
		$data->noticia = $noticiasDao->getNoticiaPorCodigo($cod_noticia);
		$data->twitter = $noticiasDao->getRegistroNotificacionTwitter($cod_noticia);
		$data->not_emails = $noticiasDao->getRegistroNotificacionEmail($cod_noticia);
		$data->categoria = $noticiasDao->getCategoriaPorId($data->noticia->CATEGORIA);
		$data->nom_galeria = $noticiasDao->getNomGaleria($data->noticia->GALERIA_ASOCIADA);
		View::render('default','noticias/editar_noticia',$data);
	}
	/*
	* Realiza una actualizacion de la noticia con la informacion recibida desde la vista de edicion de noticias
	*/
	public function updateNoticia(){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		echo json_encode($noticiasDao->updateNoticiaCreada(Utils::getPost()));
	}
	
	/*
	 * Devuelve listado de noticias segun el idioma escogido,y parametros sort/limit para la ordenacion de la lista
	 */
	public function listarNoticiasIdiomaSort($idioma,$sort,$limit){
		$this->checkSesion();
		$noticias = new noticiasDao();
		echo json_encode($noticias->getNoticiasPorIdiomaSortLimit($idioma,$sort,$limit));
	}
	
	/*
	 * Devuelve listado de noticias segun el valor introducido en el buscador,idioma
	 */
	public function listarNoticiasBusquedaTituloIdiomaSort(){
		$this->checkSesion();
		$noticias = new noticiasDao();
		echo json_encode($noticias->getNoticiasPorBusquedaTitulo(Utils::getPost()));
	}
	
	/*
	 * Devuelve listado con las galerias que se pueden asociar a la noticia
	 */
	public function getGaleriasAsociadas(){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		$noticiasUtils = new NoticiasUtils();
		echo json_encode($noticiasUtils->listadoDesplegable($noticiasDao->getGalerias()));
	}
	
	/*
	* Devuelve listado de las categorias disponibles para una noticia 
	*/
	public function getCategoriasNoticias(){
		$noticiasDao = new noticiasDao();
		$noticiasUtils = new NoticiasUtils();
		echo json_encode($noticiasUtils->listadoDesplegable($noticiasDao->getCategorias()));
	}
	
	/*
	* Devuelve imagenes asociadas a una galeria
	*/
	public function getImagenesGaleriaAsociada(){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		$info = Utils::getPost();
		$data = new \stdClass();
		echo json_encode($noticiasDao->getImagenesGaleriaAsociada($info->id));
	}
	
	/*
	 * Elimina la noticia deseada
	 */
	public function eliminarNoticia(){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		echo json_encode($noticiasDao->eliminarNoticia(Utils::getPost()->id));
	}
	
	
	
	/*
	 * Crea nueva categoria ,recibe por post el nombre de la categoria
	 */
	public function crearNuevaCategoria(){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		$result = $noticiasDao->crearCategoria(Utils::getPost()->nom_categoria);
		echo json_encode($result['affected_rows']);
	}
	
	/*
	 * Cambia el estado de la categoria a false
	 */
	public function eliminarCategoria(){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		echo json_encode($noticiasDao->eliminarCategoria(Utils::getPost()->id));
	}
	
	/*
	 * REcibe por post los parametros de la vista de nueva noticia, inserta noticia y contenido en respectivas tablas
	 * 
	 */
	public function crearNuevaNoticia(){
		$this->checkSesion();
		$noticiasDao = new noticiasDao();
		$info = Utils::getPost();
		/* Guardamos noticia y el contenido,devolvemos true o false */
		echo json_encode($noticiasDao->insertarNuevaNoticia($info));
	}
	
	/*  Notificamos a twitter si esta activado*/	
	public function notificacionTwitter(){
		$noticiasUtils = new NoticiasUtils();
		$result = $noticiasUtils->enviarNotificacionTwitter($_POST['texto']."--".Utils::randomString('10',true,true,false),$_POST['texto']."--".Utils::randomString('10',true,true,false));
		$noticiasUtils->guardarRegistroTwitter($_POST['cod_noticia'],$_POST['texto']);
		echo json_encode($result);
	}
	
	/* Envia a la clase para generar email*/
	/*
	 * $info->mails : lista de mails introducidos a los que enviar
	 * $info->galeria_asociada : codigo galeria
	 * $info->notificacion_contenido : true/false si el usuario ha indicado si quiere enviar los documentos via mail
	 * $info->documents : lista de documentos añadidos a reenviar por email
	 */
	public function notificacionEmail(){
		$noticiasUtils = new NoticiasUtils();
		$info = Utils::getPost();
		$result = $noticiasUtils->enviarNotificacionesMail($info->mails,$info->galeria_asociada,$info->notificacion_contenido,$info->documents);	
		$noticiasUtils->guardarRegistroEmail($info->cod_noticia,$info->texto,$info->documents,$info->mails,$result);
		echo json_encode($result);
		
	}
	
	/*
	 * Funcion para subir archivos al servidor. Falta filtrar.
	 */
	public function uploadContenidoNoticia(){

		$upload_folder = RUTA_UPLOAD_CONTENIDO."contenido/";
		$nombre_archivo = $_FILES['archivo']['name'];
		$tipo_archivo = $_FILES['archivo']['type'];
		$tamano_archivo = $_FILES['archivo']['size'];
		$tmp_archivo = $_FILES['archivo']['tmp_name'];
		$ext = pathinfo($nombre_archivo, PATHINFO_EXTENSION);

		$rand = Utils::randomString('13',false,true,false);
		$archivo = $rand.'_'.$nombre_archivo;
		
		$archivador = $upload_folder .  $archivo;
		
		if(empty($nombre_archivo)){
			echo json_encode(Array("success"=>FALSE,"msg"=>"Archivo vacío")); exit();
		}

		if($tamano_archivo > (int) $_SERVER['CONTENT_LENGTH']){
			echo json_encode(Array("success"=>FALSE,"msg"=>"El fichero supera el limite de envio por post")); exit();
		}
		
		if (!move_uploaded_file($tmp_archivo, $archivador)) {
			echo json_encode(Array("ok" => FALSE, "msg" => "Ocurrio un error al subir el archivo. No pudo guardarse.")); exit();
			
		}
		
		$return = Array("success"=>TRUE,"archivo"=>$nombre_archivo,"archivo_guardado"=>$archivo);
		echo json_encode($return);
		
	}

}

?>